﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using KaartenLib;

namespace ClassLibrary1
{
    public class MainKaart
    {
        public static List<int> getKaartPunten(Kaart kaart) 
        {
            List<int> punten = new List<int>();
            punten.Add((int) kaart.Waarde);
            if (kaart.isBeeldje() || kaart.Waarde == KaartWaarde.Aas) {
                if (kaart.Waarde == KaartWaarde.Dame)
                {
                    punten.Add(2);
                }
                else if (kaart.Waarde == KaartWaarde.Heer)
                {
                    punten.Add(3);
                }
                else if (kaart.Waarde == KaartWaarde.Aas)
                {
                    punten.Add(11);
                }
                else
                {
                    punten.Add(1);
                }
            }
            
            return punten;
        }

        public static List<int> getMogelijkePunten(List<Kaart> kaarten)
        {
            List<int> punten = new List<int>();
            punten.Add(0);
            foreach (Kaart k in kaarten)
            {
                List<int> kaartPunten = MainKaart.getKaartPunten(k);
                if (kaartPunten.Count > 1)
                {
                    List<int> tempPunten = new List<int>();
                    foreach (int op in punten)
                    {
                        tempPunten.Add(op);
                    }
                    for (int i = 0; i < punten.Count; i++)
                    {
                        punten[i] += kaartPunten[0];
                        tempPunten[i] += kaartPunten[1];
                    }
                    punten.AddRange(tempPunten);
                }
                else
                {
                    for (int i = 0; i < punten.Count; i++)
                    {
                        punten[i] += kaartPunten[0];
                    }
                }
            }
            return punten;
        }

        public static string ZoekKaartBeeld(Kaart kaart)
        {
            try
            {
                StringBuilder image = new StringBuilder();

                switch (kaart.Soort)
                {
                    case KaartSoort.Ruiten:
                        image.Append("di");
                        break;
                    case KaartSoort.Harten:
                        image.Append("he");
                        break;
                    case KaartSoort.Schoppen:
                        image.Append("sp");
                        break;
                    case KaartSoort.Klaveren:
                        image.Append("cl");
                        break;
                }

                switch (kaart.Waarde)
                {
                    case KaartWaarde.Aas:
                        image.Append("1");
                        break;
                    case KaartWaarde.Heer:
                        image.Append("k");
                        break;
                    case KaartWaarde.Dame:
                        image.Append("q");
                        break;
                    case KaartWaarde.Boer:
                        image.Append("j");
                        break;
                    case KaartWaarde.Tien:
                        image.Append("10");
                        break;
                    case KaartWaarde.Negen:
                        image.Append("9");
                        break;
                    case KaartWaarde.Acht:
                        image.Append("8");
                        break;
                    case KaartWaarde.Zeven:
                        image.Append("7");
                        break;
                    case KaartWaarde.Zes:
                        image.Append("6");
                        break;
                    case KaartWaarde.Vijf:
                        image.Append("5");
                        break;
                    case KaartWaarde.Vier:
                        image.Append("4");
                        break;
                    case KaartWaarde.Drie:
                        image.Append("3");
                        break;
                    case KaartWaarde.Twee:
                        image.Append("2");
                        break;
                }
                image.Append(".gif");
                image.Insert(0, @"..\..\KaartAfbeeldingen\");
                return image.ToString();
            }
            catch (Exception)
            {
                throw new ArgumentException("Kaartbeeld kan niet geladen worden!!!");
            }
        }
    }
}
